package fr.imac.ProjetAndroid;

import android.app.Activity;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;

/**
 * La classe geolocation permet à l'application de se connecter au GPS et de
 * recevoir les position du mobile
 * @author florianebrin
 *
 */
public class Geolocation implements LocationListener {
	private double longitude;
	private double latitude;
	private String choixSource;
	private Boolean isEnable;
	
	private LocationManager lManager;
	
	
	public Geolocation(Activity a)  {
		
		// Parametre par defaut
		// la source par d�faut est le GPS
		longitude = 0;
		latitude = 0;
		choixSource = LocationManager.GPS_PROVIDER;
		
		lManager = (LocationManager)a.getSystemService(Context.LOCATION_SERVICE);
		lManager.getLastKnownLocation(choixSource);
		
		Log.i("toto", "GPS lat "+latitude +" GPS long "+longitude);
		Log.i("toto", "demarre le GPS");
		
	}
		
	/**
	 * Cette fonction permet de lancer la requête vers le GPS
	 */
	public void requestPosition() {
		
		// test si l'on est connect� � internet avt de faire �a sinon exception !
		if(lManager.isProviderEnabled(choixSource)) {
			Log.i("toto", "GPS OK");
			isEnable = true;
			lManager.requestLocationUpdates(choixSource, 60000, 0, this);
		} else {
			Log.i("toto", "GPS non connect�");
		}
		
	}
	
	/**
	 * Cette fonction permet d'arrêter la connexion avec le GPS
	 */
	public void stopGeolocation() {
		Log.i("toto", "GPS Stopp�");
		isEnable = false;
		lManager.removeUpdates(this);
	}
	
	@Override
	public void onLocationChanged(Location location) {
		// TODO Auto-generated method stub
		//on sauvegarde la position
		
		if(isEnable){
			this.latitude = location.getLatitude();
			this.longitude = location.getLongitude();
		}
		Log.i("toto", "GPS lat "+latitude +" GPS long "+longitude);
		//((TextView)findViewById(R.id.latitude)).setText(String.valueOf(myGeolocation.getLatitude()));
       //((TextView)findViewById(R.id.longitude)).setText(String.valueOf(myGeolocation.getLatitude()));
		//et on sp�cifie au service que l'on ne souhaite plus avoir de mise � jour
		//lManager.removeUpdates(this);
	
		
	}

	
	@Override
	public void onProviderDisabled(String provider) {
		//on sp�cifie au service que l'on ne souhaite plus avoir de mise � jour
		Log.i("toto", "GPS disable !!!!");
		lManager.removeUpdates(this);
		
	}


	@Override
	public void onProviderEnabled(String provider) {
		// TODO Auto-generated method stub	
		Log.i("toto", "GPS enable !!!!");
	}



	@Override
	public void onStatusChanged(String provider, int status, Bundle extras) {
		// TODO Auto-generated method stub
		Log.i("toto", "GPS status changed !!!!");
	}
	
	/**
	 * @param longitude the longitude to set
	 */
	public void setLongitude(double longitude) {
		this.longitude = longitude;
	}
	/**
	 * @return the longitude
	 */
	public double getLongitude() {
		return longitude;
	}
	/**
	 * @param latitude the latitude to set
	 */
	public void setLatitude(double latitude) {
		this.latitude = latitude;
	}
	/**
	 * @return the latitude
	 */
	public double getLatitude() {
		return latitude;
	}

	/**
	 * @param choixSource the choixSource to set
	 */
	public void setChoixSource(String choixSource) {
		this.choixSource = choixSource;
	}

	/**
	 * @return the choixSource
	 */
	public String getChoixSource() {
		return choixSource;
	}
}
